// 入口函数
$(function () {
    // 需求1：初始化文章分类列表数据
    // 因为后面还要用，所以封装成函数
    //调用
    initArtCateList();
    //封装
    function initArtCateList() {
        axios({
            method: 'GET',
            url: '/my/article/cates',

        }).then(res => {
            // console.log(res.data);
            if (res.data.status !== 0) {
                return layer.msg(res.data.message)
            }
            // 成功后直接渲染
            let arr = []
            // 遍历返回的数据
            res.data.data.forEach(ele => {
                arr.push(`
                   <tr>
                      <td>${ele.Id} </td>
                      <td>${ele.name} </td>
                      <td>${ele.alias} </td>
                      <td>
                          <button data-id="${ele.Id}" class="btn-edit layui-btn layui-btn-xs">修改</button>
                          <button data-id="${ele.Id}" class="btn-del layui-btn layui-btn-xs layui-btn-danger">删除</button>
                      </td>
                  </tr>
                `)
            });
            //then方法里面，forEach方法外面处理数组
            // console.log(arr.join(''));
            $('tbody').empty().html(arr.join(''))
        })
    }

    //需求2：添加文章分类
    // 点击按钮通过layui里面的layer，给出弹出层对话框
    let indexAdd = 0;
    $('#addBtn').on('click', function () {
        indexAdd = layer.open({
            type: '1',
            title: '添加文章类别',
            area: ['500px', '260px'],
            // 将来，content里面要放form表单，所以放到最末尾
            content: `
              <form id="addForm" class="layui-form" action="">
                    <!-- 分类名称 -->
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                   <div class="layui-input-block">
                   <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                   class="layui-input">
                  </div>
                </div>
              <!-- 分类别名 -->
               <div class="layui-form-item">
                     <label class="layui-form-label">分类别名</label>
                      <div class="layui-input-block">
                      <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                        class="layui-input">
                     </div>
               </div>
              <!-- 按钮 -->
             <div class="layui-form-item">
                <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="formDemo">确认添加</button>
                 <button type="reset" class="layui-btn layui-btn-primary">重置</button>
                 </div>
            </div>
         </form> `
        });
    });


    // 需求3：点击确认添加按钮，添加文章分类
    // 事件委托--非form绑定submit事件
    $('body').on('submit', '#addForm', function (e) {
        e.preventDefault();
        // alert(111)
        axios({
            method: 'POST',
            url: '/my/article/addcates',
            data: $(this).serialize()
        }).then(res => {
            if (res.data.status !== 0) {
                return layer.msg('恭喜您，添加文章类别成功！')
            }
            //成功：提示,初始化文章分类
            layer.msg('恭喜你，添加文章类别成功！');
            initArtCateList();
            $('#addForm')[0].reset();
            // 关闭对话框
            layer.close(indexAdd);
        })
    });


    let indexEdit = 0;
    // 需求4：点击修改，显示弹出层
    $('tbody').on('click', '.btn-edit', function () {
        //点击编辑按钮做两件事 1.弹出层 
        indexEdit = layer.open({
            type: '1',
            title: '修改文章类别',
            area: ['500px', '260px'],
            // 将来，content里面要放form表单，所以放到最末尾
            // 隐藏域 ，填充Id值，将来修改数据的时候使用 
            // <input type="hidden" name="Id">
            content: `
              <form lay-filter="editForm" id="editForm" class="layui-form" action="">
                    <!-- 分类名称 -->

                    <input type="hidden" name="Id">
                <div class="layui-form-item">
                    <label class="layui-form-label">分类名称</label>
                   <div class="layui-input-block">
                   <input type="text" name="name" required lay-verify="required" placeholder="请输入分类名称" autocomplete="off"
                   class="layui-input">
                  </div>
                </div>
              <!-- 分类别名 -->
               <div class="layui-form-item">
                     <label class="layui-form-label">分类别名</label>
                      <div class="layui-input-block">
                      <input type="text" name="alias" required lay-verify="required" placeholder="请输入分类别名" autocomplete="off"
                        class="layui-input">
                     </div>
               </div>
              <!-- 按钮 -->
             <div class="layui-form-item">
                <div class="layui-input-block">
                <button class="layui-btn" lay-submit lay-filter="formDemo">确认修改</button>
                 </div>
            </div>
         </form> `
        });

        //点击编辑按钮做两件事 2.赋值
        // (获取数据和渲染数据，要写到.btn-edit的点击事件里面)
        let id = $(this).attr('data-id');
        // alert(id);
        //发送ajax
        axios({
            method: 'GET',
            //URL参数是写在路径里面的
            //传值的时候  ‘：’必须省略 / 必须保留 id是动态变化的
            url: '/my/article/cates/' + id

        }).then(res => {
            if (res.data.status !== 0) {
                return layer.msg(res.data.message);
            }
            //成功后渲染 layui.form.val()
            layui.form.val('editForm', res.data.data)
        })
    });


    //需求5：修改文章分类--事件委托(和添加几乎一模一样)

    $('body').on('submit', '#editForm', function (e) {
        e.preventDefault();
        // alert(111)
        //修改分类
        axios({
            method: 'POST',
            url: '/my/article/updatecate',
            data: $(this).serialize()
        }).then(res => {
            if (res.data.status !== 0) {
                return layer.msg('恭喜您，修改文章类别成功！')
            }
            //成功：提示,初始化文章分类
            layer.msg('恭喜你，添加文章类别成功！');
            initArtCateList();
            $('#editForm')[0].reset();
            // 关闭对话框
            layer.close(indexEdit);
        })
    });

    // 需求6：删除
    $('tbody').on('click', '.btn-del', function () {
        let id = $(this).attr('data-id');
        // alert(id);
        //发送ajax删除文章分类
        layer.confirm('确认删除？', { icon: 3, title: '提示' }, function (index) {
            //do something
            axios({
                url: '/my/article/deletecate/' + id
            }).then(res => {
                if (res.data.status !== 0) {
                    return layer.msg(res.data.message)
                }
                //成功提示 删除文章类别成功
                layer.msg('恭喜你,删除文章类别成功！');
                initArtCateList();
            })
            //关闭询问框
            layer.close(index);
        });
    })

})